const Router = require('koa-router')  //注意：引入的方式
const koaBody = require('koa-body');
const fs = require('fs');
const path = require('path')
var format = require('date-format');
const { auth } = require('../middleware/auth.middleware')
const { upload_file } = require('../controller/common.controller')
const router = new Router({ prefix: '/' })

// 上传文件
router.post(
  'upload/file', 
  auth,

  koaBody({
    multipart: true, // 是否支持 multipart-formdate 的表单
    formidable: {
      // 上传目录
      uploadDir: path.join(__dirname, '../static/upload'),
      // 保留文件扩展名
      keepExtensions: true,
      onFileBegin: async (name, file) => {
        // 无论是多文件还是单文件上传都会重复调用此函数
        // 最终要保存到的文件夹目录
        const dirName = format("yyyyMMddhhmmss", new Date());
        const dir = path.join(__dirname, `../static/upload/${dirName}`);

       // 检查文件夹是否存在如果不存在则新建文件夹
        if (!fs.existsSync(dir)) {
          fs.mkdirSync(dir);
        }
   
        // 文件名称去掉特殊字符但保留原始文件名称
        const fileName = file.name
        // 覆盖文件存放的完整路径(保留原始名称)
        file.path = `${dir}/${fileName}`;
      },
      onError: (error) => {
        app.status = 400;
        log4js.error(error);
        // 这里可以定义自己的返回内容
        app.body = { code: 400, msg: "上传失败", data: {} };
        return;
      },
    }
  }), 
  upload_file
 
)



module.exports = router